package demo12.gumballRemote;

import java.rmi.Naming;

/**
 * 远程服务对象
 * */
public class GumballMachineTestDrive {

	public static void main(String[] args) {
		GumballMachineRemote MygumballMachine = null;
		int count;

		if (args.length < 2) {
			System.out.println("GumballMachine <name> <inventory>");
 			System.exit(1);
		}

		try {
			count = Integer.parseInt(args[1]);

			MygumballMachine = 
				new GumballMachine(args[0], count);
/*	Naming 类提供在对象注册表中存储和获得远程对远程对象引用的方法。
 * Naming 类的每个方法都可将某个名称作为其一个参数，
 * 该名称是使用以下形式的 URL 格式（没有 scheme 组件）的 java.lang.String：

		     //host:port/name
		 
其中 host 是注册表所在的主机（远程或本地），port 是注册表接受调用的端口号，name 是未经注册表解释的简单字符串。
host 和 port 两者都是可选项。如果省略了 host，则主机默认为本地主机。如果省略了 port，则端口默认为 1099，该端口是 RMI 的注册表 rmiregistry 使用的“著名”端口。

为远程对象 绑定 名称是指为远程对象关联或注册一个名称，以后可以使用该名称来查找该远程对象。可以使用 Naming 类的 bind 或 rebind 方法将远程对象与某个名称相关联。
一旦远程对象向本地主机上 RMI 注册表注册（绑定），远程（或本地）主机上的调用方可以通过名称查找远程对象，获得其引用，
并在该对象上调用远程方法。注册表可由在一个主机上运行的所有服务器共享，需要时个别服务器进程也可以创建和使用自己的注册表*/			
			
/*Naming.rebind将指定名称重新绑定到一个新的远程对象。 将替换任何现有绑定。
参数：
name - 使用 URL 格式（不含 scheme 组件）
obj - 将与名称关联的新远程对象*/
			Naming.rebind("//" + args[0] + "/gumballmachine", MygumballMachine);//注册名字MygumballMachine
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
